package Controladores;

import SO.Operaciones.Operaciones;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* @class ControladorOperaciones
* @author Mauricio Alvarez.
* @brief Clase controlador Operaciones.
*/
public class ControladorOperaciones
{

    /**
     *  @var private Operaciones operaciones
     *  @brief Variable global de tipo clase Operaciones.
    */
    private Operaciones operaciones;


    //////////////////////////
    // CONSTRUCTOR
    //////////////////////////
    public ControladorOperaciones()
    {
        operaciones = new Operaciones();
    }


    //////////////////////
    // OPERACIONES
    //////////////////////

    /**
     * @brief Invoca el método GuardarStopwords de la clase Operaciones.
     * @param no tiene.
     * @return void
    */
    public void GuardarStopwords() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException
    {
        operaciones.GuardarStopwords();
    }

    
    /**
     * @brief Invoca el método CargarStopwords de la clase Operaciones.
     * @param no tiene.
     * @return Map<String, Integer>
    */
    public Map<String, Integer> CargarStopwords() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
         return operaciones.CargarStopwords();
    }


    /**
     * @brief Invoca el método BorrarStopwords de la clase Operaciones.
     * @param no tiene.
     * @return void
    */
    public void BorrarStopwords() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        operaciones.BorrarStopwords();
    }


    /**
     * @brief Invoca el método FormatearConsulta de la clase Operaciones.
     * @param String Consulta.
     * @return String
    */
    public String FormatearConsulta(String Consulta)
    {
        return operaciones.FormatearConsulta(Consulta);
    }


    /**
     * @brief Invoca el método ObtenerPalabrasConsulta de la clase Operaciones.
     * @param String Consulta.
     * @return Map
    */
    public Map ObtenerPalabrasConsulta (String consulta, Map<String, Integer> Stopwords)
    {
        return operaciones.ObtenerPalabrasConsulta(consulta, Stopwords);
    }


    /**
     * @brief Invoca el método ObtenerPalabrasPagina de la clase Operaciones.
     * @param Contenido de las páginas y el listado de stopwords.
     * @return List<String>
    */
    public List<String> ObtenerPalabrasPagina(String Pag, Map<String, Integer> Stopwords) throws FileNotFoundException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException
    {
         return operaciones.ObtenerPalabrasPagina(Pag, Stopwords);
    }


    /**
     * @brief Invoca el método ObtenerPalabrasTopico de la clase Operaciones.
     * @param Listado de terminos del tópico y el listado de stopwords.
     * @return Map<String, Integer>
    */
    public Map<String, Integer> ObtenerPalabrasTopico(Map<String, Integer> Topico, Map<String, Integer> Stopwords)
    {
        return operaciones.ObtenerPalabrasTopico(Topico, Stopwords);
    }    


    /**
     * @brief Invoca el método GenerarDiccionario de la clase Operaciones.
     * @param Listado de terminos del tópico y el listado de terminos de una página.
     * @return Set<String>
    */
    public Set<String> GenerarDiccionario(Map BoWtopico, Map<String, Integer> Contenido)
    {
        return operaciones.GenerarDiccionario(BoWtopico, Contenido);
    }


    /**
     * @brief Invoca el método GenerarVectorTopico de la clase Operaciones.
     * @param Listado de terminos del diccionario y el listado de terminos del tópico.
     * @return double[][]
    */
    public double[][] GenerarVectorTopico(Set<String> Diccionario, Map BoWtopico)
    {
         return operaciones.GenerarVectorTopico(Diccionario, BoWtopico);
    }


    /**
     * @brief Invoca el método GenerarVectorContenido de la clase Operaciones.
     * @param Listado de terminos del diccionario y el listado de terminos de la página.
     * @return double[][]
    */
    public double[][] GenerarVectorContenido(Set<String> Diccionario, Map Contenido)
    {
        return operaciones.GenerarVectorContenido(Diccionario, Contenido);
    }


    /**
     * @brief Invoca el método BorrarMediciones de la clase Operaciones.
     * @param no tiene.
     * @return void
    */
    public void BorrarMediciones() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        operaciones.BorrarMediciones();
    }

    public void BorrarPaginas() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException 
    {
        operaciones.BorrarPaginas();
    }


}//FIN CLASE ControladorOperaciones